package com.chenfan.mcn.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;

import java.util.Date;

import com.chenfan.mcn.extension.log.FieldDesc;
import com.chenfan.mcn.constant.DictTypeCst;
import com.chenfan.mcn.enums.YearStatusEnum;
import com.chenfan.mcn.extension.log.FieldTypeEnum;
import com.chenfan.mcn.component.dict.ContractingIdTranslator;
import com.chenfan.mcn.model.base.BaseOwnerEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 年框合同
 * </p>
 *
 * @author lizhejin
 * @since 2021-01-19
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("year_frame_contract")
public class YearFrameContract extends BaseOwnerEntity {

    private static final long serialVersionUID = 477052864869602040L;

    /**
     * 年框合同code
     */
    private String yearFrameCode;

    /**
     * 审批状态:0_待提交、1_审批中、2_审批通过、3_审批拒绝、4_已撤回、5_已作废。
     */
    @FieldDesc(value = "审批状态", translator = YearStatusEnum.class)
    private Integer yearStatus;

    /**
     * 折扣审批单id
     */
    private Long discountId;

    /**
     * 折扣审批单code
     */
    @FieldDesc(value = "折扣审批单")
    private String discountCode;

    /**
     * 合作开始时间
     */
    @JSONField(format="yyyy-MM-dd")
    @FieldDesc(value = "合作开始时间")
    private Date cooperationStartDate;

    /**
     * 合作结束时间
     */
    @JSONField(format="yyyy-MM-dd")
    @FieldDesc(value = "合作结束时间")
    private Date cooperationEndDate;

    /**
     * 合同主体（数据字典）
     */
    @FieldDesc(value = "合同主体", dictType = DictTypeCst.SUBJECT_OF_CONTRACT)
    private String contractSubject;

    /**
     * 合同附件
     */
    @FieldDesc(value = "合同附件", fieldType = FieldTypeEnum.FILE)
    private String enclosure;

    /**
     * 备注
     */
    @FieldDesc(value = "备注")
    private String remark;


    /**
     * 客户/红人id
     */
    private Long customerId;

    /**
     * 客户/红人名称
     */
    @FieldDesc(value = "客户/红人名称")
    private String customerName;

    /**
     * 签约对象：1客户、2红人
     */
    private Integer targetType;


    /**
     * 合同类型
     */
    @FieldDesc(value = "合同类型", dictType = DictTypeCst.YEAR_FRAME_CONTRACT)
    private String contractType;

    /**
     * 归档状态(0-待盖章，1-待归档，2-已归档)
     */
    private Integer archivingStatus;

    /**
     * 归档编号
     */
    private String archivingCode;

    /**
     * 我司合同主体id
     */
    @FieldDesc(value = "我司合同主体", translator = ContractingIdTranslator.class)
    private Long contractingId;

}
